ЧАСТИНА 1. Функція prepare_set

prepare_set<-function(file_name){
  library(stringr)
  library(tibble)
  setwd("/Users/alinanastasyak/Desktop/пари 5 2/R")
  df<-read.csv(file_name, skip = 1, header = TRUE, encoding="UTF-8", stringsAsFactors = FALSE)
  colnames(df)[1]="Country"
  for (i in (1:length(colnames(df)))){
  if (str_detect(colnames(df)[i], "X01")){
    colnames(df)[i]=str_replace(colnames(df)[i],"X01..","Gold")
  }
  if (str_detect(colnames(df)[i], "X02")){
    colnames(df)[i]=str_replace(colnames(df)[i],"X02..","Silver")
  }
  if (str_detect(colnames(df)[i], "X03")){
    colnames(df)[i]=str_replace(colnames(df)[i],"X03..","Bronze")
  }
  if (str_detect(colnames(df)[i], "X..")){
    colnames(df)[i]=str_replace(colnames(df)[i],"X..","")
  }
  
  }
country=c()
ID_=c()
for (i in (1:length(df["Country"][[1]]))){
  country[i]=str_split(df['Country'][[1]][i],"\\s+\\(.*",simplify = TRUE)[1,1]
  ID_[i]=str_split(df['Country'][[1]][i],"\\(",n=2,simplify = TRUE)[1,2]
  ID_[i]=substring(ID_[i],1,3)
  
}
df["Country"]=country
df2=add_column(df, ID_, .before = 1)
df2=head(df2,-1)
  return (df2)
  }

olympics <- prepare_set("olympics.csv")
olympics

Котра країна виграла найбільшу кількість золотих нагород на літніх іграх?

answer_one<-function(){
  country_max=''
  gold_max=0
  for (i in (1:length(olympics['Country'][[1]]))){
    if (olympics['Gold'][[1]][i]>gold_max) {
      gold_max=olympics['Gold'][[1]][i]
      country_max=olympics['Country'][[1]][i]}
  }
  return(country_max)
}
answer_one()
## [1] "United States"

Яка країна має найбільшу різницю між кількістю нагород на літніх та зимових іграх?

answer_two<-function(){
  country_dif=''
  dif=0
  for (i in (1:length(olympics['Country'][[1]]))){
    if (abs(olympics['Total'][[1]][i]-olympics['Total.1'][[1]][i])>dif)   {
      dif=abs(olympics['Total'][[1]][i]-olympics['Total.1'][[1]][i])
      country_dif=olympics['Country'][[1]][i]
      }
  }
  return(country_dif)
}
answer_two()
## [1] "United States"

В якій крайні найбільша різниця між літніми та зимовими золотими нагородами відносно до загальної кількості нагород (Summer Gold - Winter Gold) / Total Gold. Врахувати тільки країни які мають як мінімум по одній нагороді в літніх та зимових іграх.

answer_three<-function(){
  country_dif2=''
  dif=0
  for (i in (1:length(olympics['Country'][[1]]))){
    if ((olympics['Gold'][[1]][i]>=1) & (olympics['Gold.1'][[1]][i]>=1)){
    
    if (abs((olympics['Gold'][[1]][i]-olympics['Gold.1'][[1]][i]))/olympics['Gold.2'][[1]][i]>dif){
        dif=abs((olympics['Gold'][[1]][i]-olympics['Gold.1'][[1]][i]))/olympics['Gold.2'][[1]][i]
        country_dif2=olympics['Country'][[1]][i]
      }
    }
  }
  return(country_dif2)
}
answer_three()
## [1] "Bulgaria"

Необхідно знайти кількість балів по кожній крайні. Бали рахуються наступним чином: Золота нагорода Gold.2 це три бали, срібна Silver.2 - 2 бали та бронзова Bronze.2 – 1 бал.

answer_four<-function(){
 country_new=olympics['Country'][[1]]
 Points=c()
 for (i in (1:length(olympics['Country'][[1]]))){
   Points[i]=olympics['Gold.2'][[1]][i]*3+olympics['Silver.2'][[1]][i]*2+olympics['Bronze.2'][[1]][i]*1
 }
 new_olimp<-data.frame(country_new,Points)
 colnames(new_olimp)[1]='Country'
 return(new_olimp)
}
answer_four()

ЧАСТИНА 2

census_df <- read.csv("census.csv", stringsAsFactors = FALSE)
census_df

В якому штаті (state) більше всього округів (county)?

answer_five<-function(){

big_state=''
max_county=0
countyy=1
for (i in (2:length(census_df['STNAME'][[1]]))){
  if (census_df['STNAME'][[1]][i]==census_df['STNAME'][[1]][i-1]){countyy=countyy+1}
  else {
    if (max_county<countyy){
      max_county=countyy
      countyy=1
      big_state=census_df['STNAME'][[1]][i-1]
    }
  }
  
}
return(big_state)
}
answer_five()
## [1] "Texas"

Якщо розглядати три найбільш населених округа (county) з кожного штату, які три найбільш населені штати (в порядку з більш до менш населеного)?

answer_six<-function(){
people1=c()
people2=c()
people3=c()
lists=c(people1,people2,people3)
ctyname=unique(census_df['STNAME'][[1]])

  for (j in (1:length(ctyname))){
    people1[j]=0
    for (i in (1:length(census_df['STNAME'][[1]]))){
      if (census_df['STNAME'][[1]][i]==ctyname[j]){
        if (census_df['COUNTY'][[1]][i]!=0){
        if (census_df['CENSUS2010POP'][[1]][i]>people1[j]){
          people1[j]=census_df['CENSUS2010POP'][[1]][i]
        }
        }
      }
    
  }
  }

for (j in (1:length(ctyname))){
    people2[j]=0
    for (i in (1:length(census_df['STNAME'][[1]]))){
      if (census_df['STNAME'][[1]][i]==ctyname[j]){
        if (census_df['COUNTY'][[1]][i]!=0){
        if ((census_df['CENSUS2010POP'][[1]][i]>people2[j]) & (census_df['CENSUS2010POP'][[1]][i]<people1[j])){
          people2[j]=census_df['CENSUS2010POP'][[1]][i]
        }
        }
      }
    
  }
  }

for (j in (1:length(ctyname))){
    people3[j]=0
    for (i in (1:length(census_df['STNAME'][[1]]))){
      if (census_df['STNAME'][[1]][i]==ctyname[j]){
        if (census_df['COUNTY'][[1]][i]!=0){
        if ((census_df['CENSUS2010POP'][[1]][i]>people3[j]) & (census_df['CENSUS2010POP'][[1]][i]<people1[j])& (census_df['CENSUS2010POP'][[1]][i]<people2[j])){
          people3[j]=census_df['CENSUS2010POP'][[1]][i]
        }
        }
      }
    
  }
}
people=people1+people2+people3
df_100=data.frame(ctyname,people)
big_state=c('','','')
max1=c(0,0,0)

for (j in (1:length(big_state))){
  for (i in (1:length(ctyname))){
    if (df_100['people'][[1]][i]>max1[j]){
      if (j==1){
        max1[j]=df_100['people'][[1]][i]
        big_state[j]=df_100['ctyname'][[1]][i]
      }
      if (j==2){
        if (df_100['people'][[1]][i]<max1[j-1]){
        max1[j]=df_100['people'][[1]][i]
        big_state[j]=df_100['ctyname'][[1]][i]
        }
      }
      if (j==3){
        if (df_100['people'][[1]][i]<max1[j-1]&df_100['people'][[1]][i]<max1[j-2]){
        max1[j]=df_100['people'][[1]][i]
        big_state[j]=df_100['ctyname'][[1]][i]
      }
        }
      }
  }
}
return(big_state)
}
answer_six()
## [1] "California" "Texas"      "Illinois"

Який округ (county) має найбільшу абсолютну зміну в населенні протягом періоду 2010-2015?

answer_seven<-function(){
var=c()
var_max=-1
for (i in (1:length(census_df['COUNTY'][[1]]))){
  if (census_df['COUNTY'][[1]][i]!=0){
  var=c()
  k=1
  for (m in (10:14)){
    f=m+1
    for (n in (f:15)){
      var[k]=(census_df[[n]][i]-census_df[[m]][i])
      k=k+1
    }
  }
  if (var_max<max(var)){
    county_name=census_df['CTYNAME'][[1]][i]
    var_max=max(var)
    var=c()
    }
}
}
return(county_name)
#return(county)

}
answer_seven()
## [1] "Harris County"

В census_df США поділені на 4 регіони (колонка “REGION”). Напишіть функцію, яка знаходить округи (county), що належать регіонам 1 або 2, назва яких починається з “Washington” та POPESTIMATE2015 більше ніж POPESTIMATE2014.

answer_eight<-function(){
county_name=c()
st_name=c()
k=1
for (i in (1:length(census_df['REGION'][[1]]))){
  if (census_df['REGION'][[1]][i]==1 || census_df['REGION'][[1]][i]==2){
    if  (str_detect(census_df['CTYNAME'][[1]][i], "Washington")){
      if(census_df['POPESTIMATE2015'][[1]][i]>census_df['POPESTIMATE2014'][[1]][i]){ 
        county_name[k]=census_df['CTYNAME'][[1]][i]
        st_name[k]=census_df['STNAME'][[1]][i]
        k=k+1
        }
    }
  }
}
df_7<-data.frame(st_name,county_name)
colnames(df_7)[1]='STNAME'
colnames(df_7)[2]='CTYNAME'
return(df_7)
}

answer_eight()